/**
 * This interface defines the methods necessary to implement while mapping Matrix 
 * Multiplication.
 * 
 * @author kpatel
 */

public interface Interface_Matrix_Multiplication_Mapping {




	/**
	 * This method loads data into CFUs from RAM created by the Create_RAM
	 * method. The data loading depends on; 
	 * - Size of the Matrix
	 * - Number of CFUs
	 * - CFU interconnects
	 * - How many channels going to be processed in parallel
	 */
	
	void Load_FirstMatrix_Data_into_CFUs();
	
	void Load_SecondMatrix_Data_into_CFUs();

	/**
	 * This method configures CFUs before the execution starts
	 */

	void Configure_CFUs();

	/**
	 * This method runs CFUs
	 */
	void Run_CFUs();

	/**
	 * This method collects the final/intermediate outputs from CFUs
	 */
	void Get_Output();

}
